O que é uma injeção sql? [Makeuseof explica]

O mundo da segurança da Internet está atormentado com as portas abertas, backdoors, falhas de segurança, cavalos de Tróia, worms, vulnerabilidades de firewall e uma série de outras questões que nos manter em nossos pés todos os dias. Para usuários privados, vírus e worms parece ser a pior das possibilidades. Mas para qualquer um que funciona um banco de dados, a injeção SQL é uma das falhas de segurança mais destrutivas lá fora.

Bases de dados são extremamente valiosos no reino de computadores. Eles são essenciais para armazenar dados como memória e mostrando as várias relações entre pontos de dados. Aqui no MakeUseOf, temos inúmeros bancos de dados dedicados a várias tarefas: um para todos os nossos artigos, um para a nossa base de usuários, um para o nosso programa de recompensas, ea lista continua. O que acontece quando nossos bancos de dados são maliciosamente atacado - ou mesmo destruído?

Quando você não tem acesso real para um banco de dados, a injeção SQL é uma das formas mais proeminentes de ataque. Continue lendo para saber exatamente o que é e como ele pode ser tão perigoso.

Video: Introdução ao SQL Injection - Vulnerabilidades Web #4

O que é SQL, de qualquer maneira?

Para compreender a injeção de SQL, você tem que primeiro entender o que SQL é e como ele se relaciona com um website. SQL, que significa Structured Query Language, é um tipo de linguagem de programação otimizada para o gerenciamento de dados tabulares. Para todos os efeitos, é apenas uma maneira para os programadores para se comunicar com um banco de dados e dar-lhe comandos.

injeção SQL

Sempre que um banco de dados está sendo posta em prática, há comandos SQL que está sendo dado e processados. Se você pensar em todos os momentos em que um banco de dados está sendo postas em prática, você vai concluir que isso só acontece em um punhado de circunstâncias:

  • Quando novos dados precisa ser inserido,
  • Quando os dados atual precisa ser mudado,
  • Quando os dados de idade precisa ser excluído,
  • Quando uma determinada peça de dados precisam ser pesquisados ​​e recuperados.

Toda vez que uma dessas ações precisa ocorrer, um comando SQL está sendo executado em algum lugar em um servidor. Para a maior parte, o programador chega a determinar quando e onde estes comandos SQL ocorrer no código-fonte. No entanto, há circunstâncias inevitáveis ​​quando um usuário pode forçar uma manipulação de um banco de dados - e as oportunidades estão ao seu redor.

Alguma vez você já registrado em um site? Alguma vez você já postou um comentário em um artigo de blog ou uma resposta em um tópico do fórum? Já enviou uma mensagem de Facebook a um amigo? Digitou um e-mail no Gmail? Procurado para um site no Google? Toda vez que você ver um campo de entrada em um site (nome de usuário, senha, consulta de pesquisa, caixa de mensagem, etc.), o texto é enviado para o banco de dados e posta em prática.

Agora, se um utilizador mal intencionado queria mexer com um banco de dados, não há muitas opções para ele. Uma possibilidade seria a de ganho real fisica o acesso ao servidor e destruí-lo em sua base. Mas por outro lado, faz mais sentido para o usuário malicioso para sequestrar um comando SQL existente quando se utiliza um campo de entrada, forçando assim o servidor para executar um comando diferente do que foi inicialmente previsto.

A técnica de injeção SQL

Este ato de seqüestro de um comando SQL existente é o que a injeção de SQL se refere. Por que é chamado de injeção? Porque sequestrando um comando SQL requer que o usuário para injetar seu próprio código SQL ao usar um campo de entrada. Será que o som confuso? Deixe-me ilustrar com um exemplo.

Considere página de login do MakeUseOf. Quando você entra em seu nome de usuário e senha e clique em “Enviar“, Você está forçando o servidor web para gerar um comando SQL que envolve as informações que você acabou de dar, isto é, seu nome de usuário e senha. O banco de dados recebe a informação, verifica-se que a combinação nome de usuário / senha está correta, então dá-lhe o acesso adequado a outras áreas do site.

o que é a injeção de SQL

Agora imagine o que aconteceria se um usuário mal-intencionado não entrar em seu nome de usuário e senha, mas em vez digitado um comando SQL como seu nome de usuário? Se o código do servidor não está devidamente assegurada, o banco de dados irá receber o nome de usuário com defeito (que é realmente um comando SQL) e realmente executá-lo como um comando.



E é por isso que ele é chamado de injeção. O comando SQL é injetado no banco de dados através de meios totalmente legítimos, manipulando-o de tal forma que acaba fazendo algo que não deveria fazer.

Video: Entendendo SQL injection

Um exemplo avançado

Até agora, eu descrevi injeção SQL em termos de alto nível para que qualquer pessoa pode entender, mesmo aqueles sem conhecimento de programação. Nesta seção, eu vou dar um exemplo real de como esta técnica é possível. Se você é um novato SQL, ou se você nunca lidou com a programação antes, então você pode tranquilamente pular esta seção.

Ao fazer login em um site, aqui está uma possível forma que o código pode ser escrito em SQL:

user_id SELECIONAR
DE users_db
ONDE username = `$ username` e senha = `$ password`

Video: SQL Injection com SQLMAP - Vulnerabilidades Web #7

Basicamente, o comando pede ao banco de dados para retornar todos user_ids da mesa users_db que correspondem a combinação nome de usuário e senha digitada. Parece tudo muito bem e dândi, certo?

Vamos supor que o formulário de login foi dado as seguintes entradas:

Nome de usuário: David
Password: fubar` OU ‘x `=` x

Observe que o campo de senha não começar ou terminar com um apóstrofo. Quando o servidor recebe esta tentativa de login, ele vai levar tudo dada no campo de senha e colocá-lo no lugar da senha $ no código. O comando SQL resultante será parecido com este:

user_id SELECIONAR
DE users_db
ONDE username = `David` e senha =`fubar` OU ‘x `=` x`

Quando o servidor é executado este comando, a última parte do comando SQL será sempre return true. Isto significa que o utilizador mal intencionado poderia introduzir qualquer nome de usuário e instantaneamente ter acesso a essa conta, porque o login iria funcionar ou não, ele tem o direito de senha.

injeção SQL

Claro, registrando em conta de alguém é uma ofensa bastante leve quando você compará-lo com todas as outras tentativas de hack possíveis: eliminar bases de dados inteiras, zoneando todos os dados, ou mesmo roubando os dados nos bancos de dados.

desenvolvedores web profissionais estão ficando melhor e melhor a prevenir esses truques, mas de vez em quando você vai ouvir que a empresa sofreu perdas nas mãos de um ataque de injeção SQL. Quando isso acontece, você já sabe o que significa e como é possível.

Video: SQL Injection manual passo a passo - Vulnerabilidades Web #8


Artigos relacionados